﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using APILocawebGateway.HTMLHelper;
using APILocawebGateway;

namespace APILocawebGateway.AMEX
{
    public class HTMLHelperAMEX
    {
        /// <summary>
        ///  Este método cria o form básico segundo a configuração AMEX
        /// </summary>
        /// <param name="configuracaoAmex"></param>
        /// <param name="quantidadeParcelas"></param>
        /// <param name="numeroOrdem"></param>
        /// <param name="preco"></param>
        /// <returns></returns>
        private static Form MontarFormBasico(ConfiguracaoAMEX configuracaoAmex, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco)
        {
            Form form = new Form(Configuracao.URLCOMPONENTELOCAWEB, "POST", "frmAmex");
            form.AddControl(new InputHidden("identificacao", configuracaoAmex.Identificacao));
            form.AddControl(new InputHidden("ambiente", configuracaoAmex.Ambiente.ToString()));
            form.AddControl(new InputHidden("modulo", Modulos.AMEX));
            form.AddControl(new InputHidden("operacao", "Pagamento"));
            form.AddControl(new InputHidden("MerchTxnRef", numeroOrdem));
            form.AddControl(new InputHidden("valor", UtilidadesAMEX.FormatarPreco(preco)));
            form.AddControl(new InputHidden("Locale", "pt_BR"));
            return form;
        }

        /// <summary>
        /// Este método retorna a string do form AMEX básico
        /// </summary>
        /// <param name="configuracaoAmex"></param>
        /// <param name="quantidadeParcelas"></param>
        /// <param name="numeroOrdem"></param>
        /// <param name="preco"></param>
        /// <returns></returns>
        public static string RenderizarForm(ConfiguracaoAMEX configuracaoAmex, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco)
        {
            return MontarFormBasico(configuracaoAmex, quantidadeParcelas, numeroOrdem, preco).Render();
        }

        /// <summary>
        /// Este método retorna a string do form AMEX avançado
        /// </summary>
        /// <param name="configuracaoAmex"></param>
        /// <param name="quantidadeParcelas"></param>
        /// <param name="numeroOrdem"></param>
        /// <param name="preco"></param>
        /// <param name="imagePath"></param>
        /// <param name="campoLivre"></param>
        /// <returns></returns>
        public static string RenderizarForm(ConfiguracaoAMEX configuracaoAmex, Int32 quantidadeParcelas, String numeroOrdem, Decimal preco, String imagePath, String campoLivre)
        {
            var form = MontarFormBasico(configuracaoAmex, quantidadeParcelas, numeroOrdem, preco);
            form.AddControl(new PaymentMethodImage("imgAmex", imagePath, null, null));
            form.AddControl(new InputHidden("OrderInfo", campoLivre));
            return form.Render();
        }

    }
}
